"""
自定义样式的标签组件
"""
from PyQt5.QtWidgets import QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont

from app.ui.theme import Theme


class StyledLabel(QLabel):
    """
    自定义样式的标签组件
    """
    
    # 标签类型
    PRIMARY = "text_primary"
    SECONDARY = "text_secondary"
    DISABLED = "text_disabled"
    
    # 标签大小
    SMALL = -2
    NORMAL = 0
    LARGE = 2
    XLARGE = 4
    
    def __init__(self, text="", parent=None, label_type=PRIMARY, size=NORMAL, bold=False, align=Qt.AlignLeft):
        """
        初始化标签
        
        @param text: 标签文本
        @param parent: 父组件
        @param label_type: 标签类型
        @param size: 标签大小
        @param bold: 是否加粗
        @param align: 对齐方式
        """
        super().__init__(text, parent)
        self.label_type = label_type
        self.size = size
        self.bold = bold
        
        # 设置对齐方式
        self.setAlignment(align)
        
        # 应用样式
        self.update_style()
    
    def update_style(self):
        """
        更新标签样式
        """
        # 获取主题颜色
        text_color = Theme.get_color(self.label_type)
        
        # 设置字体
        font = Theme.get_font(self.size)
        if self.bold:
            font.setBold(True)
        self.setFont(font)
        
        # 设置样式表
        self.setStyleSheet(f"""
            QLabel {{
                color: {text_color};
            }}
        """)
    
    def set_label_type(self, label_type):
        """
        设置标签类型
        
        @param label_type: 标签类型
        """
        self.label_type = label_type
        self.update_style()
    
    def set_size(self, size):
        """
        设置标签大小
        
        @param size: 标签大小
        """
        self.size = size
        self.update_style()
    
    def set_bold(self, bold):
        """
        设置是否加粗
        
        @param bold: 是否加粗
        """
        self.bold = bold
        self.update_style() 